import { Dispatch, SetStateAction } from "react";

type TypeGeoProps = {
    setLocation: Dispatch<SetStateAction<{
        latitude: number;
        longitude: number;
    } | null>>;
    setError: Dispatch<SetStateAction<string | null>>;
};

export const getLocation = ({ setLocation, setError }: TypeGeoProps) => {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(
            (position) => {
                const { latitude, longitude } = position.coords;
                setLocation({ latitude, longitude });
            },
            (error) => {
                switch (error.code) {
                    case error.PERMISSION_DENIED:
                        setError("Пользователь отклонил доступ к местоположению.");
                        break;
                    case error.POSITION_UNAVAILABLE:
                        setError("Информация о местоположении недоступна.");
                        break;
                    case error.TIMEOUT:
                        setError("Истекло время для получения местоположения.");
                        break;
                    default:
                        setError("Неизвестная ошибка.");
                        break;
                }
            }
        );
    } else {
        setError("Геолокация не поддерживается вашим браузером.");
    }
};
